﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Gestión_UTN.util;

namespace Gestión_UTN.View.alta
{
    public partial class AltaCiudad : Form
    {
        private static bl.ciudadbl createCiudad = factories.blfactory.createCiudad();
        private static bl.provinciabl createProvincia = factories.blfactory.createProvincia();

        public AltaCiudad()
        {
            InitializeComponent();
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            LimpiarForm();
        }

        private void LimpiarForm()
        {
            this.txtCodPostal.Clear();
            this.txtNombre.Clear();

            this.cmbProvincia.Text = "Buenos Aires";
        }

        private void AltaCiudad_Load(object sender, EventArgs e)
        {
            DataTable provincias = createProvincia.FindAllProvincias();

            if (null != provincias)
            {
                foreach (DataRow dr in provincias.Rows)
                {
                    this.cmbProvincia.Items.Add(dr["prov_nombre"]);
                }
            }
        }

        private bool Validar()
        {
            bool checkCodPostal = false;
            bool checkNombre = false;
            bool checkProvincia = false;

            if (!Validador.es_numero(txtCodPostal))
            {
                errProv.SetError(txtCodPostal, "Sólo Números!");
            }
            else
            {
                errProv.SetError(txtCodPostal, String.Empty);
                checkCodPostal = true;
            }

            if (!Validador.es_nombre(txtNombre))
            {
                errProv.SetError(txtNombre, "Sólo Letras");
            }
            else
            {
                errProv.SetError(txtNombre, String.Empty);
                checkNombre = true;
            }

            if (!Validador.es_nombre(cmbProvincia))
            {
                errProv.SetError(cmbProvincia, "Sólo Letras");
            }
            else
            {
                errProv.SetError(cmbProvincia, String.Empty);
                checkProvincia = true;
            }

            return (checkCodPostal && checkNombre && checkProvincia);
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (Validar())
                {
                    int codPostal = Convert.ToInt32(this.txtCodPostal.Text);

                    bo.Ciudadbo ciu = createCiudad.FindCiudadByCodPostal(codPostal);

                    if (null == ciu)
                    {
                        string nombre = this.txtNombre.Text;
                        string provincia = this.cmbProvincia.Text;

                        ciu = new bo.Ciudadbo(codPostal, nombre, provincia);

                        bool ingresado = createCiudad.SaveCiudad(ciu);

                        if (ingresado)
                        {
                            MessageBox.Show("Ciudad Ingresada!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            this.Close();

                            this.Dispose();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Ciudad Existente!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }

                }
            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private void btnProvincia_Click(object sender, EventArgs e)
        {
            AltaProvincia pro = new AltaProvincia();

            pro.FormClosed += new FormClosedEventHandler(pro_FormClosed);

            pro.Show();
        }

        void pro_FormClosed(object sender, FormClosedEventArgs e)
        {
            DataTable provincias = createProvincia.FindAllProvincias();

            if (null != provincias)
            {
                this.cmbProvincia.Items.Clear();

                foreach (DataRow dr in provincias.Rows)
                {
                    this.cmbProvincia.Items.Add(dr["prov_nombre"]);
                }
            }
        }

    }
}
